package org.luckyjourney.util;

import com.baidu.aip.speech.AipSpeech;
import com.baidu.aip.speech.TtsResponse;
import com.baidu.aip.util.Util;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Value;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.UUID;

/**
 * @author 飒飒
 * @ClassName Sample
 * @description: TODO
 * @date 2024年03月14日
 * @version: 1.0
 */
@Slf4j
public class Sample {
    //设置APPID/AK/SK
    public static final String APP_ID = "51930529";
    public static final String API_KEY = "ibp7kQ5d1dCMANhOgNbHgw4Z";
    public static final String SECRET_KEY = "stuRbnOPmVEyDcFRR0pj1ECdREzp7Z5h";

   /* @Value("${file.path}")
    private static String filePath;*/

    public static void main(String filePath) {
        // 初始化一个AipSpeech
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);

        // 可选：设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);

        /*// 可选：设置代理服务器地址, http和socket二选一，或者均不设置
        client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
        client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理*/

        // 可选：设置log4j日志输出格式，若不设置，则使用默认配置
        // 也可以直接通过jvm启动参数设置此环境变量
        System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");

        HashMap<String, Object> hashMap = new HashMap<>();
        //0为普通女声，1为普通男生，3为情感合成-度逍遥，4为情感合成-度丫丫，默认为普通女声
        //精品音库：5为度小娇，103为度米朵，106为度博文，110为度小童，111为度小萌
        hashMap.put("per", "2");
        // 语速，取值0-9，默认为5中语速
        hashMap.put("spd", "5");
        // 音调，取值0-9，默认为5中语调
        hashMap.put("pit", "5");
        // 音量，取值0-9，默认为5中音量
        hashMap.put("vol", "5");
        // 调用接口
        TtsResponse res = client.synthesis("你好百度", "zh", 1, hashMap);
        byte[] data = res.getData();
        JSONObject res1 = res.getResult();
        if (data != null) {
            try {
                filePath =  filePath+ System.currentTimeMillis() + ".mp3";
                File file = new File(filePath); // 打开mp3文件即可播放
                file.getParentFile().mkdirs();
                FileOutputStream os = new FileOutputStream(file);
                os.write(data);
                os.close();
                System.out.println("audio file write to " + file.getAbsolutePath());
//                Util.writeBytesToFileSystem(data, filePath+System.currentTimeMillis()+"SpeechRecognition.mp3");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (res1 != null) {
            System.out.println(res1.toString(2));
        }

    }
}
